package com.power.sifa.approve.api;

import com.plf.common.domain.ResponseDTO;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import com.power.sifa.approve.model.Aprv_process_materials;
import com.power.sifa.approve.model.pageInfo.Aprv_process_materialsPageInfo;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
 *  审批过程材料 Feign
 */
public interface IAprv_process_materialsFeign {

    /**
     * 审批过程材料分页列表
     */
    @PostMapping("/aprv_process_materials/list")
    ResponseDTO list(@RequestBody Aprv_process_materialsPageInfo aprv_process_materialsPageInfo);

    /**
    * 查看审批过程材料
    */
    @GetMapping("/aprv_process_materials/view")
    ResponseDTO view(@RequestParam("id") String id);

    /**
    * 删除审批过程材料
    */
    @PostMapping("/aprv_process_materials/delete")
    ResponseDTO delete(@RequestParam("id") String id);

    ///**
    // * 查看审批过程材料 复合主键使用
    // */
    //@PostMapping("/aprv_process_materials/viewByPK")
    //ResponseDTO viewByPK(@RequestBody Aprv_process_materials.Aprv_process_materialsPK pk);

    /**
     * 修改或保存审批过程材料
     */
    @PostMapping("/aprv_process_materials/save")
    ResponseDTO save(@RequestBody Aprv_process_materials  aprv_process_materials);

    ///**
    // * 删除审批过程材料 复合主键使用
    // */
    //@PostMapping("/aprv_process_materials/deleteByPK")
    //ResponseDTO deleteByPK(@RequestBody Aprv_process_materials.Aprv_process_materialsPK pk);

    /**
     * 批量删除审批过程材料
     */
    @PostMapping("/aprv_process_materials/batchDel")
    ResponseDTO batchDel(@RequestParam("ids") String ids);

     /**
     * 导出excel
     */
    @PostMapping("/aprv_process_materials/output")
    void output(HttpServletResponse response, @RequestBody Aprv_process_materialsPageInfo aprv_process_materialsPageInfo);

     /**
     * 导出excel模板
     */
    @PostMapping("/aprv_process_materials/exportExcelTemplate")
    void exportExcelTemplate(HttpServletResponse response);

     /**
     *	导入excel
     */
    @PostMapping("/aprv_process_materials/importExcel")
    ResponseDTO importExcel(@RequestBody MultipartFile file) throws IOException ;


    /**
     * 保存审批过程材料类型文件- 保存单条,后续文件会更新同一条数据
     * @param applyId 对应的申请主数据的id
     * @param  fileType 对应的材料的类型
     * @param userId
     * @param userName
     * @param file 保存的文件
     * @return
     */
    @PostMapping("/aprv_process_materials/saveMaterial")
    ResponseDTO saveMaterial(@RequestParam("applyid") String applyId, @RequestParam("fileType") Integer fileType,
                             @RequestParam("busiType") Integer busiType, @RequestParam("userId") String userId, @RequestParam("userName") String userName,
                             @RequestPart("file") MultipartFile file);

    /**
     * 保存审批过程材料类型文件- 保存多条 ，后续数据保存多条
     * @param applyId 对应的申请主数据的id
     * @param fileType 对应的材料的类型
     * @param userId
     * @param userName
     * @param files 保存的文件
     * @return
     */
    @PostMapping("/aprv_process_materials/saveMaterialMulti")
    ResponseDTO saveMaterialMulti(@RequestParam("applyid") String applyId, @RequestParam("fileType") Integer fileType,
                                   @RequestParam("busiType") Integer busiType, @RequestParam("userId") String userId, @RequestParam("userName") String userName,
                                   @RequestPart("files") List<MultipartFile> files);


    /**
     * 保存自定义的材料类型定义的文件
     * @param applyId 申请主表的applyid
     * @param fileType 材料类型
     * @param busiType 业务类型
     * @param userId
     * @param userName
     * @param replyCustomerId 自定义材料类型依赖的id
     * @param files
     * @return
     */
    @PostMapping("/aprv_process_materials/saveMaterialCustomer")
    ResponseDTO saveMaterialCustomer(@RequestParam("applyid") String applyId, @RequestParam("fileType") Integer fileType,
                                   @RequestParam("busiType") Integer busiType, @RequestParam("userId") String userId,
                                   @RequestParam("userName") String userName,
                                   @RequestParam("replyCustomerId") String replyCustomerId,
                                   @RequestPart("files") List<MultipartFile> files);


    /**
     * 送达阶段上传文件接口
     * @param applyid applyid
     * @param mattype  材料类型
     * @param userId 用户id
     * @param userName 用户名称
     * @param files 文件
     * @return
     */
    @PostMapping("/aprv_process_materials/saveMaterialArrive")
    ResponseDTO saveMaterialArrive(@RequestParam("applyid") String applyid,
                                   @RequestParam("mattype") Integer mattype, @RequestParam("userId") String userId,
                                   @RequestParam("userName") String userName,
                                   @RequestPart("files") List<MultipartFile> files);

    /**
     * 删除审批过程材料类型文件
     * @param materialId 记录数据表主键id
     * @return
     */
    @PostMapping("/aprv_process_materials/deleteMaterial")
    ResponseDTO deleteMaterial(@RequestParam("materialId") String materialId);



    /**
     * 通过applID获取对应的材料文件- 按照类别分类
     */
    @PostMapping("/aprv_process_materials/getMaterialByApplyId")
    ResponseDTO getMaterialByApplyId(@RequestBody Aprv_process_materialsPageInfo pageInfo);


    /**
     * 通过applID获取对应的材料文件-查询全部
     * @param applyid
     * @return
     */
    @PostMapping("/aprv_process_materials/getAllMaterialByApplyId")
    ResponseDTO getAllMaterialByApplyId(@RequestParam("applyid") String applyid);

    /**
     * 通过applID获取对应的材料文件-查询全部
     * @param pageInfo
     * @return
     */
    @PostMapping("/aprv_process_materials/getMaterialList")
    ResponseDTO getMaterialList(@RequestBody Aprv_process_materialsPageInfo pageInfo);

    /**
     * 通过applID获取对应的系统文书
     * @param applyid
     * @return
     */
    @PostMapping("/aprv_process_materials/queryDocumentByApplyId")
    ResponseDTO queryDocumentByApplyId(@RequestParam("applyid") String applyid);

    /**
     * 通过applyid查询未归档的自定义文件
     * @param applyid
     * @return
     */
    @PostMapping("/aprv_process_materials/queryNoArchiveCustomerMaterial")
    ResponseDTO queryNoArchiveCustomerMaterial(@RequestParam("applyid") String applyid);

    /**
     * 根据新版模板重新生成文书
     * @return
     */
    @PostMapping("/aprv_process_materials/regeneration")
    ResponseDTO regeneration();


    /**
     * 分屏展示对应案件涉及的各个环节的文件的资料
     * @return
     */
    @PostMapping("/aprv_process_materials/screenMaterials")
    ResponseDTO screenMaterials(String applyid);

}
